﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using upcdew_20111_group2b.CapaPersistencia;
using upcdew_20111_group2b.CapaDominio;

namespace upcdew_20111_group2b.CapaNegocio
{
    public class AdminAreaComun
    {
        // Dependencias
        ResidenteDAO ResidenteDAO { get; set; }        
        Area_ComunDAO Area_ComunDAO { get; set; }
        ReservaDAO ReservaDAO { get; set; }

        public ICollection<Area_Comun> ListarArea_Comun(String estado)
        {
            if (estado == null)
                throw new Exception("Debe ingresar el estado");
            return Area_ComunDAO.ListarArea_ComunPorEstado(estado);

        }

        public ICollection<Reserva> ListarReserva(DateTime fecha)
        {
            if (fecha == null)
                throw new Exception("Debe ingresar la fecha");
            return ReservaDAO.ListarReservaPorFecha(fecha);

        }
      
        public Reserva ObtenerReserva(String codreserva)
        {
            // Aquí deben ir las validaciones, reglas de negocio, algoritmos, etc.
            return ReservaDAO.Obtener(codreserva);
        }
        public Reserva ModificarReserva(Reserva reserva)
        {
            // Aquí deben ir las validaciones, reglas de negocio, algoritmos, etc.
            return ReservaDAO.Modificar(reserva);
        }
        public void EliminarReserva(Reserva reserva)
        {
            // Aquí deben ir las validaciones, reglas de negocio, algoritmos, etc.
            ReservaDAO.Eliminar(reserva);
        }

        public Reserva CrearReserva(Reserva reservaCrear) //CrearReserva(String codreserva, String codresidente, String codarea_comun, DateTime fec_reserva, Int32 num_personas, String tex_comentario)
        {
            //Reserva reserva = ReservaDAO.Obtener(codreserva);
            if (reservaCrear.CodReserva== null)
                throw new Exception("La Reserva " + reservaCrear.CodReserva + " no existe.");
            if (reservaCrear.CodResidente == null)
                throw new Exception("El residente " + reservaCrear.CodResidente + " no existe.");
            if (reservaCrear.CodAreaComun== null)
                throw new Exception("Debe ingresar el area comun a reservar");
            Reserva existereserva = ReservaDAO.Obtener(reservaCrear.CodReserva);
            if (existereserva != null)
                throw new Exception("El código " + reservaCrear.CodReserva + "ya existe");
            
            //Reserva validarareaComun = ReservaDAO.ListarArea_ComunFec_Reserva(, reservaCrear.Fec_Reserva);
            //if (validarareaComun != null)
            //    throw new Exception("El area Comun " + reservaCrear.CodReserva + "ya esta reservado para esta fecha");
            return ReservaDAO.Crear(reservaCrear);
        }

    }
}